`timescale 10ns / 10ns

module tb_uart_tx_m ();

    // 输入信号
    reg  clk_r_l;  // 主时钟
    reg  rst_r_nl;
    reg  key_a_r_nl;

    // 输出信号
    wire uart0_tx_w_l;

    test_uart_tx_m test_i_l (
        .clk_w_i(clk_r_l),
        .rst_w_ni(rst_r_nl),
        .key_a_w_ni(key_a_r_nl),
        .uart0_tx_w_o(uart0_tx_w_l)
    );

    // 生成时钟
    initial begin
        clk_r_l = 0;
        forever begin
            #2 clk_r_l = ~clk_r_l;
        end
    end

    // 主流程
    initial begin
        // 初始化信号
        rst_r_nl   = 0;  // 复位
        key_a_r_nl = 1;  // 按键默认释放（无效）

        #11;
        rst_r_nl = 1;  // 解复位

        #7;
        key_a_r_nl = 0;  // 按键按下

        #2000;
        key_a_r_nl = 1;  // 释放按键

        #30000;
        key_a_r_nl = 0;  // 再次按下

        #30000;
        $finish;  // 结束仿真
    end

    // 生成波形文件
    initial begin
        $dumpfile(`OUTPUT_PATH);
        $dumpvars(0, test_i_l);
    end
endmodule
